package com.schedule.service;

import com.schedule.dto.AutoScheduleDto;
import com.schedule.vo.ScheduleResultVo;
import java.time.LocalDate;
import java.util.List;

/**
 * 排课服务接口
 */
public interface ScheduleService {
    
    /**
     * 自动排课
     */
    ScheduleResultVo autoSchedule(AutoScheduleDto autoScheduleDto);
    
    /**
     * 预览排课结果
     */
    ScheduleResultVo previewSchedule(AutoScheduleDto autoScheduleDto);
    
    /**
     * 确认排课结果
     */
    Boolean confirmSchedule(Long classId, Long rootCourseId);
    
    /**
     * 获取班级课表
     */
    ScheduleResultVo getClassSchedule(Long classId, Long rootCourseId);
    
    /**
     * 获取教师课表
     */
    List<ScheduleResultVo.ScheduleItemVo> getTeacherSchedule(Long teacherId, LocalDate startDate, LocalDate endDate);
    
    /**
     * 调整课程安排
     */
    Boolean adjustSchedule(Long scheduleId, LocalDate newDate, Integer newTimeSlot, Long newTeacherId);
    
    /**
     * 检查排课冲突
     */
    List<String> checkScheduleConflicts(AutoScheduleDto autoScheduleDto);
}